--[[
智能ID定位按钮函数
功能：根据ID查找点赞和收藏按钮
参数：无
返回值：布尔值，表示是否成功找到并点击了按钮
--]]

local function ID找节点(id, className, packageName, isClick)
    print("尝试根据ID查找节点: " .. id)
    
    -- 设置默认值
    className = className or "android.widget.LinearLayout"
    packageName = packageName or "com.phoenix.read"
    
    -- 创建节点查询信息
    local 节点信息 = {className = className, packageName = packageName, id = id}
    
    -- 尝试查找节点
    local 节点 = nil
    local success, result = pcall(function()
        return nodeLib.findOne(节点信息)
    end)
    
    if not success then
        print("查找节点出错: " .. tostring(result))
        return false
    end
    
    节点 = result
    
    -- 检查是否找到节点
    if 节点 == nil then
        print("未找到ID为 " .. id .. " 的节点")
        return false
    end
    
    -- 获取bounds信息
    if 节点.bounds then
        print("找到节点！位置信息: 左=" .. 节点.bounds.l .. " 上=" .. 节点.bounds.t .. 
                " 右=" .. 节点.bounds.r .. " 下=" .. 节点.bounds.b)
        
        -- 计算中心点
        local center_x = math.floor((节点.bounds.l + 节点.bounds.r) / 2)
        local center_y = math.floor((节点.bounds.t + 节点.bounds.b) / 2)
        
        print("节点中心位置: x=" .. center_x .. ", y=" .. center_y)
        
        -- 如果需要点击，则点击中心位置
        if isClick then
            print("点击节点中心")
            local 点击坐标 = require("basic_operations.点击坐标")
            点击坐标(center_x, center_y, 1000)
            sleep(1000)
        end
        
        -- 返回节点和中心坐标
        return true, 节点, center_x, center_y
    else
        print("节点没有bounds信息")
        return false
    end
end

local function ID列表查找按钮(id列表, className, packageName, isClick)
    if not id列表 or type(id列表) ~= "table" or #id列表 == 0 then
        print("错误: ID列表为空或格式不正确")
        return false
    end
    
    -- 遍历ID列表，尝试每一个ID
    for i, id in ipairs(id列表) do
        print("尝试查找ID: " .. id)
        
        local 成功, 节点, x, y = ID找节点(id, className, packageName, isClick)
        if 成功 then
            print("成功找到并处理节点，使用ID: " .. id)
            return true, 节点, x, y
        end
    end
    
    print("所有ID都未能找到对应节点")
    return false
end

function 智能ID定位按钮()
    print("开始智能ID定位按钮")
    
    -- 加载node_config
    local node_config = require("node_config")
    
    -- 尝试查找点赞按钮
    local 点赞成功 = false
    if node_config and node_config.可能的点赞按钮ID then
        print("尝试定位点赞按钮")
        点赞成功, _, _, _ = ID列表查找按钮(node_config.可能的点赞按钮ID, 
                                    "android.widget.LinearLayout", 
                                    "com.phoenix.read", 
                                    true)
        if 点赞成功 then
            print("点赞按钮点击成功")
            sleep(math.random(500, 1000))
        end
    end
    
    -- 尝试查找收藏按钮
    local 收藏成功 = false
    if node_config and node_config.可能的收藏按钮ID then
        print("尝试定位收藏按钮")
        收藏成功, _, _, _ = ID列表查找按钮(node_config.可能的收藏按钮ID, 
                                    "android.widget.LinearLayout", 
                                    "com.phoenix.read", 
                                    true)
        if 收藏成功 then
            print("收藏按钮点击成功")
            sleep(math.random(500, 1000))
        end
    end
    
    return 点赞成功 or 收藏成功
end

return 智能ID定位按钮 